//跨域的通用方法
angular.module('crossModule.service',[])
    .service('crossService',['$window',function($window){
        this.jsonp=function(url,params,fn){
            //1.处理回调函数挂载问题（不能覆盖）
            //伪随机数在同一时间调用很可能会重复
            //形如jsonp_556443415245
            var cbName = 'jsonp_'+(Math.random()*Math.random()).toString().substr(2)
            $window[cbName] = function(data){
                fn(data);
                //不断创建标签，最终可能太多，尤其是spa永远不会刷新页面，那标签就会越来越多，所以可以在这个脚本执行完成过后移除
                $window.document.body.removeChild(scriptElement);
            }

            //2.组合最终请求的url地址
            //将params转换为{key1:val1,key2:val2} => key1=val1&key2=val2
            var str = '';
            for(var key in params){
                str += key + '=' + params[key] + '&'
            }
            //告诉服务器我的回调叫什么
            str += 'callback='+ cbName
            url += '?'+ str

            //3.创建一个script标签，并将src设置为url地址
            var scriptElement = $window.document.createElement('script')
            scriptElement.src = url

            //4.将script标签添加到页面执行
            $window.document.body.appendChild(scriptElement)
        }
    }])